from datetime import datetime

from django.db import models


# Create your models here.

# 创建用户表模型
class Users(models.Model):
    objects = models.Manager()  # 避免后续IDE找不到objects属性
    user_id = models.IntegerField(primary_key=True)  # 用户ID，如果是主键需要添加上primary_key = True
    user_account = models.CharField(max_length=20)  # 用户账号
    user_password_hash = models.CharField(max_length=100)  # 用户密码
    user_password_salt = models.CharField(max_length=50)  # 干扰值
    user_name = models.CharField(max_length=20)  # 用户昵称
    user_type = models.IntegerField(default=8)  # 用户类型：0.店主、1.代理、7.VIP、8.正常用户、9.黑名单
    user_status = models.IntegerField(default=0)  # 用户状态：0.有效、9.禁用、黑名单
    user_integral = models.IntegerField()  # 用户积分
    user_path = models.CharField(max_length=100)  # 用户头像地址
    user_createtime = models.DateTimeField(default=datetime.now)  # 用户创建时间
    user_updatetime = models.DateTimeField(default=datetime.now)  # 用户修改时间
    user_qq = models.IntegerField()  # 用户QQ
    user_sex = models.IntegerField(default=1)  # 用户性别，0.女、1.男
    user_age = models.IntegerField(default=18)  # 用户年龄
    user_remark = models.CharField(max_length=100)  # 备注

    def toDict(self):
        return {"user_id": self.user_id, "user_account": self.user_account,
                "user_name": self.user_name, "user_type": self.user_type, "user_status": self.user_status,
                "user_integral": self.user_integral, "user_path": self.user_path,
                "user_createtime": self.user_createtime.strftime('%Y-%m-%d'),
                "user_updatetime": self.user_updatetime.strftime('%Y-%m-%d'),
                "user_qq": self.user_qq, "user_sex": self.user_sex, "user_age": self.user_age,
                "user_remark": self.user_remark, }

    class Meta:
        db_table = 'user_info'  # 如果数据库有表，这里填的是数据的表名


# 创建商品类型表模型
class GoodType(models.Model):
    objects = models.Manager()  # 避免后续IDE找不到objects属性
    type_id = models.IntegerField(primary_key=True)  # 类型ID，如果是主键需要添加上primary_key = True
    type_name = models.CharField(max_length=20)  # 商品名称
    type_status = models.IntegerField(default=0)  # 用户状态：0.有效、9.禁用
    type_createtime = models.DateTimeField(default=datetime.now)  # 商品创建时间
    type_updatetime = models.DateTimeField(default=datetime.now)  # 商品修改时间

    class Meta:
        db_table = 'good_type'  # 如果数据库有表，这里填的是数据的表名


class Goods(models.Model):
    objects = models.Manager()  # 避免后续IDE找不到objects属性
    good_id = models.IntegerField(primary_key=True)  # ID，如果是主键需要添加上primary_key = True
    type_id = models.IntegerField()  # 物品所属类别
    good_name = models.CharField(max_length=20)  # 物品名称
    good_price = models.DecimalField(max_digits=6, decimal_places=1)  # 物品单价
    good_path = models.CharField(max_length=100)  # 物品图片
    good_hot = models.IntegerField(default=0)  # 是否是打折热销  0.正常商品、1、打折商品、2、热销商品
    good_createtime = models.DateTimeField(default=datetime.now)  # 物品创建时间
    good_createuser = models.IntegerField()  # 物品创建人
    good_updatetime = models.DateTimeField(default=datetime.now)  # 物品修改时间
    good_updateuser = models.IntegerField()  # 物品修改人
    good_status = models.IntegerField(default=0)  # 用户状态：0.有效、1.下架、9.禁用
    good_remark = models.CharField(max_length=100)  # 备注

    def toDict(self):
        return {"good_id": self.good_id,
                "good_name": self.good_name,
                "good_price": float(self.good_price),
                "good_path": self.good_path,
                "good_hot": self.good_hot,
                "good_createtime": self.good_createtime.strftime('%Y-%m-%d'),
                "good_createUser": self.good_createuser,
                "good_updatetime": self.good_updatetime.strftime('%Y-%m-%d'),
                "good_updateUser": self.good_updateuser,
                "good_status": self.good_status,
                "good_remark": self.good_remark, }

    class Meta:
        db_table = 'good_info'  # 如果数据库有表，这里填的是数据的表名


# 创建订单模型
class Orders_Main(models.Model):
    objects = models.Manager()  # 避免后续IDE找不到objects属性
    order_id = models.IntegerField(primary_key=True)  # 类型ID，如果是主键需要添加上primary_key = True
    order_num = models.IntegerField()  # 下单数量
    order_money = models.DecimalField(max_digits=6, decimal_places=1)  # 下单商品金额
    # 默认的在外键所在的表中保存的是对应主表的数据行的id值,该字段名称为模型字段名+ "_id"
    # 这里user对应数据库就是 user_id,  django 1.9 后 on_delete参数必不可少
    user = models.ForeignKey('Users', on_delete=models.CASCADE)  # 下单人ID
    order_status = models.IntegerField(default=0)  # 用户状态：0.有效、9.禁用
    order_createtime = models.DateTimeField(default=datetime.now)  # 订单创建时间
    order_remark = models.CharField(max_length=100)  # 备注

    class Meta:
        db_table = 'order_main'  # 如果数据库有表，这里填的是数据的表名


class OrderSub(models.Model):
    objects = models.Manager()  # 避免后续IDE找不到objects属性
    orderSub_id = models.IntegerField(primary_key=True)  # 类型ID，如果是主键需要添加上primary_key = True
    order = models.ForeignKey('Orders_Main', on_delete=models.CASCADE)
    good = models.ForeignKey('Goods', on_delete=models.CASCADE)
    orderSub_num = models.IntegerField()
    good_price = models.DecimalField(max_digits=6, decimal_places=1)  # 物品单价
    orderSub_money = models.DecimalField(max_digits=6, decimal_places=1)  # 下单商品金额
    orderSub_status = models.IntegerField(default=0)  # 用户状态：0.有效、9.禁用
    user = models.ForeignKey('Users', on_delete=models.CASCADE)  # 下单人ID
    orderSub_remark = models.CharField(max_length=100)  # 备注
    orderSub_createtime = models.DateTimeField(default=datetime.now)  # 订单创建时间

    class Meta:
        db_table = 'order_sub'  # 如果数据库有表，这里填的是数据的表名
